草庐IT

c++ - C 和 C++ 中 union 的用途

全部标签

android - 工具 :openDrawer ="start" when creating a DrawerLayout (with NavigationView) from the wizard? 的用途是什么

在AndroidStudio中创建带有抽屉导航的Activity会导致其显示在XML代码中:如果我删除tools:openDrawer="start",在布局预览中,抽屉导航将关闭而不是打开。我认为这是一个替换属性,类似于android:text可以替换为tools:text以在布局预览中放置一些占位符文本。但是当我将其更改为android:openDrawer或app:openDrawer时,应用程序无法编译,因为它们是未知属性。所以我想知道tools:openDrawer是如何工作的,以及它是否在任何地方都有记录。 最佳答案 A

c++ - 通过其成员的地址激活嵌套 union 是否合法?

以下代码是否合法(在c++11/14中)?boolfoo(){unionbar{inti;boolb;};unionbaz{charc;barb;};autob=baz{'x'};autobarptr=&b.b;autoboolptr=&barptr->b;new(boolptr)bool{true};returnb.b.b;}这个例子很愚蠢,但我正在尝试使用嵌套union而不是用于变体成员的char[]block的可变参数variant实现,并且允许这样做将使我目前对复制构造函数的尝试更加清晰。将其分解为两个子问题:即使b.b处于非事件状态,通过访问barptr的成员来分配boolp

c++ - 在父类(super class) union 之上覆盖子类 union

我想知道是否可以将成员附加到子类中的C++union。classA{...union{inta;intb;};};classB:publicA{...intc;//一个更具体的例子是标记union的想法,您希望有一个子类将类型添加到union。 最佳答案 你说,I'mwonderingifit'spossibletoappendmemberstoaC++unioninasubclass.该语言不允许扩展union。将成员附加到union是不可能的。更糟糕的是,class和struct可以通过创建子类(结构)来扩展,union不能有基

c++ - union 中的 Shared_ptr

我想访问union的共享指针,尽管发生段错误:structunion_tmp{union_tmp(){}~union_tmp(){}union{inta;std::shared_ptr>ptr;};};intmain(){union_tmpb;std::shared_ptr>tmp(newstd::vector);b.ptr=tmp;//heresegmentationfaulthappensreturn0;}错误的原因是什么,我该如何避免? 最佳答案 您需要在union体中初始化std::shared_ptr:union_tmp(

c++ - 为什么我的 union 规模比我预期的要大?

当我像这样打印union的大小时:unionu{charc[5];inti;}un;使用这个:int_tmain(intargc,_TCHAR*argv[]){printf("sizeofunion=%d",sizeof(un));return0;}我使用VisualC++得到的答案是8,但我预期是5。为什么?好吧,对于同一个例子,我做了这样的事情:inti1=0x98761234;un.i=i1;printf("\nun.c[0]=%x",un.c[0]);printf("\nun.c[1]=%x",un.c[1]);printf("\nun.c[2]=%x",un.c[2]);pr

c++ - 如何创建一个具有 32 位 int 和四个 8 位 char 类型的 union ,每个 char 类型都引用 32 位 int 的不同切片?

我想创建一个最大成员是32位整数的union。主要写到这里。然后是四个8位变量,可能是char类型,每个变量将引用32位整数的不同部分,例如:union{int32myint;charchar1[7:0];charchar2[15:8];charchar3[23:16];charchar4[31:24];}但我不确定如何在C++中执行此操作。 最佳答案 这可能有效:union{int32myint;charchars[4];}; 关于c++-如何创建一个具有32位int和四个8位char

c++ - 引用使用 Union

在工作中,我一直在使用linux和适用于C++11和C++14的GCC编译器。在一些工作代码中,我使用union来存储引用和指针,如下所示:(简化为仅重要部分)structMyStruct{//Stuffunion{double&x;double*x_ptr;};MyStruct(double&value):x(value){}//Morestuff};我相信这段代码清晰、可读、明确,并且提供了一种方便的方式来存储可以转移到其他内容的引用。它提供了易于理解的语法糖,在提高可读性的同时不影响性能。然而,当我尝试在visualstudio15中使用这样的代码时,由于“double&类型的非

c++ - 一份拷贝如何使用 memcpy union 简单成员?

我不太确定关于memcpy和union普通成员的标准引用。考虑代码:structTest{union{void(*function_p)(void*);void(*function_p_c)(constvoid*);};Test(constTest&other){usingstd::memcpy;memcpy(&function_p,&other.function_p,sizeof(function_p));//?memcpy(&function_p_c,&other.function_p_c,sizeof(function_p_c));//??}};intmain(void){Tes

c++ - 有人使用 MATLAB 工具生成 C/C++ 代码吗?生成的代码是否可用于生产用途?

我们有一些研究人员在MATLAB中做了大量工作。我们经常愿意尝试将他们的代码作为更大工作流程的一部分,该工作流程需要将算法放入C/C++或Python中。我看到MathWorks宣传一种用于创建nativeC或C++代码的工具。代码有多好?它支持工具箱吗?我仍然将其视为早期原型(prototype)制作工具,但想知道代码有多好。想法? 最佳答案 我过去曾在这方面与mathworks进行过广泛的合作。工具箱很昂贵,但支持非常出色。我们对为特定DSP生成的代码进行了基准测试,发现它的速度在手动生成代码的10%以内,并且生成时间只是一小部

c++ - 创建许多 boost::polygons 的 union 的最快方法是什么?

我必须合并许多boost::polgons,但我的方法似乎性能不佳(>15分钟),尤其是在有大量多边形(>2000)的情况下。我将我想要合并的所有多边形插入一个多边形,然后加入多边形,请参阅我的代码:BOOST_FOREACH(polygon,multipolygon){boost::geometry::clear(tmp_union);//tmp_unionisamultipolygonboost::geometry::union_(result,poly,tmp_union);result=tmp_union;}结果可能不会包含很多多边形,因为大多数要合并的多边形都会相交。有没有什